﻿namespace KingerRobot.MexicoSailunMDC.SpiService;
internal interface IWcsAsrsNetOutPut
{
    /// <summary>
    /// 获取所有可用堆垛机出库路线
    /// </summary>
    /// <returns></returns>
    List<WcsAsrsNetOutputGroup> GetAsrsNetOutputByForkInfo(List<CrnForkInfo> crnForkInfos);
    /// <summary>
    /// Ems 是否能输送到硫化机
    /// </summary>
    /// <param name="ems"></param>
    /// <param name="targetLoc"></param>
    /// <returns></returns>
    bool IsAsrsNetOutput(long ems, long targetLoc);
    /// <summary>
    /// 获取路线
    /// </summary>
    /// <param name="targetLoc">硫化位</param>
    /// <returns></returns>
    POWcsAsrsNetOutput GetFirstAsrsNetOutputByTargetLoc(long targetLoc);

    List<POWcsAsrsNetOutput> GetAsrsNetOutputByTargetLoc(long targetLoc);

    /// <summary>
    /// 开始位置获取两个 ems 小车
    /// </summary>
    /// <param name="startLoc">硫化位</param>
    /// <returns></returns>
    POWcsAsrsNetOutput GetFirstAsrsNetOutputByStartLoc(long startLoc);

    /// <summary>
    /// 获取所有硫化站台位
    /// </summary>
    /// <returns></returns>
    List<long> GetOutPutTranLoc();
    /// <summary>
    /// 获取所有硫化站台位
    /// </summary>
    /// <returns></returns>
    List<long> GetOutPutByTargetLocs(List<long> curingLocs);
}

public class WcsAsrsNetOutputGroup
{
    /// <summary>
    /// 可用货叉信息
    /// </summary>
    public List<CrnForkInfo> CrnForkInfo { get; set; }
    /// <summary>
    /// 可用货叉数
    /// </summary>
    public int Count { get; set; }
    public DateTime SortTime { get; set; }

    public POWcsAsrsNetOutput WcsAsrsNetOutputs { get; set; }
}